package com.vehiclemanagement.mapper;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;

/**
 * 报表分析Mapper接口
 */
@Mapper
public interface ReportMapper {

    /**
     * 获取车辆使用统计数据
     *
     * @param vehicleId 车辆ID
     * @param startTime 开始时间
     * @param endTime   结束时间
     * @return 车辆使用统计数据
     */
    List<Map<String, Object>> getVehicleUsageStatistics(
            @Param("vehicleId") Long vehicleId,
            @Param("startTime") LocalDateTime startTime,
            @Param("endTime") LocalDateTime endTime);
    
    /**
     * 获取驾驶员工作统计数据
     *
     * @param driverId  驾驶员ID
     * @param startTime 开始时间
     * @param endTime   结束时间
     * @return 驾驶员工作统计数据
     */
    List<Map<String, Object>> getDriverWorkStatistics(
            @Param("driverId") Long driverId,
            @Param("startTime") LocalDateTime startTime,
            @Param("endTime") LocalDateTime endTime);
    
    /**
     * 获取违章统计数据
     *
     * @param year  年份
     * @param month 月份
     * @return 违章统计数据
     */
    List<Map<String, Object>> getViolationStatistics(
            @Param("year") Integer year,
            @Param("month") Integer month);
    
    /**
     * 获取事故统计数据
     *
     * @param year  年份
     * @param month 月份
     * @return 事故统计数据
     */
    List<Map<String, Object>> getAccidentStatistics(
            @Param("year") Integer year,
            @Param("month") Integer month);
    
    /**
     * 获取加油统计数据
     *
     * @param year  年份
     * @param month 月份
     * @return 加油统计数据
     */
    List<Map<String, Object>> getFuelStatistics(
            @Param("year") Integer year,
            @Param("month") Integer month);
    
    /**
     * 获取维修保养统计数据
     *
     * @param year  年份
     * @param month 月份
     * @return 维修保养统计数据
     */
    List<Map<String, Object>> getMaintenanceStatistics(
            @Param("year") Integer year,
            @Param("month") Integer month);
    
    /**
     * 获取年检统计数据
     *
     * @param year  年份
     * @param month 月份
     * @return 年检统计数据
     */
    List<Map<String, Object>> getInspectionStatistics(
            @Param("year") Integer year,
            @Param("month") Integer month);
    
    /**
     * 获取ETC通行统计数据
     *
     * @param year  年份
     * @param month 月份
     * @return ETC通行统计数据
     */
    List<Map<String, Object>> getETCPassageStatistics(
            @Param("year") Integer year,
            @Param("month") Integer month);
    
    /**
     * 获取ETC停车统计数据
     *
     * @param year  年份
     * @param month 月份
     * @return ETC停车统计数据
     */
    List<Map<String, Object>> getETCParkingStatistics(
            @Param("year") Integer year,
            @Param("month") Integer month);
} 